<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
	var num = 10;
	function changeNumber (num1) {
		// var num1 = num
		num1 = 100;
		console.log(num1);   //10 or 100
	}
	changeNumber(num);
	console.log(num);//10 or 100
	
	// 实参:就是函数调用的时候,实际传入的参数
	// 形参:函数声明的时候,用来占位的变量名,没有具体的数值
	// 在函数调用时,会默认地将实参赋值给形参
	
	var obj = {
		name: "宅男"
	};
	
	function jinhua(param) {
		// param = obj
			param.name = "高富帅";
			//下面的这句代码,重新构建了一个对象,修改了param的指向
			// 但是,obj还指向原来的那个对象 所以,在修改param的时候,修改的是
			// 新创建的对象,跟obj没有关系
			param = {
				name: "腐女"
			};
			param.name = "宅男";
			console.log(param.name);
	}
	jinhua(obj);
			
	console.log(obj.name);	//高富帅 or  宅男 or  腐女
	
	
	// 值类型做函数参数
	// 函数的内部的变量,也就是形参和实参只是简单的赋值操作,两个数据独立
	//存储于内存中的
	// 在函数内部对形参进行修改,不会影响外面的变量
	
	// 引用类型做函数的参数
	// 还是把实参存储的地址赋值给了形参,在函数内部,形参同样也指向该对象,
	// 所以,在函数内部对该对象进行修改,会影响到外面的变量
	
	// 注意:如果在函数内部重新创建对象,为该形参赋值,那么两个对象将不再有关系
	// 修改其中一个,另外一个不受影响
</script>

</body>
</html>